﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Dynamic;

namespace CSharp_ExpandoObject
{
    class Program
    {
        static void Main(string[] args)
        {
            dynamic cliente = new ExpandoObject();
            cliente.Nome = "Bruno Silva";
            cliente.Telemovel = "911 555 444";

            cliente.Morada = new ExpandoObject();
            cliente.Morada.Pais = "Portugal";
            cliente.Morada.Cidade = "Porto";

            cliente.Escrever = new Action<string>(
                (texto) => Console.WriteLine(texto));

            MostrarDadosCliente(cliente);
        }

        static void MostrarDadosCliente(dynamic cliente)
        {
            Console.WriteLine("Nome: {0}", cliente.Nome);
            Console.WriteLine("Telemóvel: {0}", cliente.Telemovel);

            Console.WriteLine("País: {0}", cliente.Morada.Pais);
            Console.WriteLine("Cidade: {0}", cliente.Morada.Cidade);

            cliente.Escrever("Olá...");
        }
    }
}
